﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using AccesoDatos.Manejador;
using AccesoDatos.Objetos;
using Conexion;
using System.Windows.Forms;


namespace Autorizacion_facturas_caja
{
    public partial class frmPrestamos_Autoriza : Form
    {
        objRH obj3 = new objRH();
        objPrestamos obj2 = new objPrestamos();
        Manejador_Prestamos_Autoriza Man = new Manejador_Prestamos_Autoriza();
        Manejador_Prestamos_Reporte Mane = new Manejador_Prestamos_Reporte();
        AccesoDatos.CantidadLetra Cant = new AccesoDatos.CantidadLetra();

        ClsConexion conexion = new ClsConexion();
        public double cantidad, mensual, maximo, descontar;
        public double plazo;
        double porcentaje;
     
        #region funciones
        
        public frmPrestamos_Autoriza(objPrestamos obj, objRH obj1, int forma)
        {
            InitializeComponent();
            ToolTip1();
            obj2 = obj;
            obj3 = obj1;
            mostrarDatosLabels();

            if (forma == 1)
            {
                btnGuardarMod.Visible = false;
                camposocultos();
            }
            else {
                llenarCampos();
                camposocultos();
                btnGuardarMod.Visible = true;
                btnLimpiar.Visible = false;
                btnGuardar.Visible = false;
            }
        }
      
        public void camposocultos() { 
             
                txtCantidad_Autorizada.Visible = false;
                txtMontoDescontar.Visible = false;
                txtPlazo.Visible = false;
                txtRazones.Visible = false;
                label3.Visible = false;
                label5.Visible = false;
                label6.Visible = false;
                label7.Visible = false;
                btnCalcular.Visible = false;
                label17.Visible = false;
                txtPorcentaje.Visible = false;
                label18.Visible = false;
        }
        public void obtenerCampos() {
          
            obj2.Fecha_autorizacion = dteFecha_Autorizada.Value;
            obj2.Autorizado = cmbAutorizado.SelectedItem.ToString();
            obj2.Cantidad_Autorizada = txtCantidad_Autorizada.Text.Trim();
            obj2.Plazo= Convert.ToInt32(txtPlazo.Text.Trim());
            obj2.Monto_descontar = txtMontoDescontar.Text.Trim();
            obj2.Descripcion = txtRazones.Text.Trim();
        }
        public void llenarCampos() {
            try
            {
                dteFecha_Autorizada.Value = obj2.Fecha_autorizacion;
                cmbAutorizado.Text = obj2.Autorizado;
                txtCantidad_Autorizada.Text = obj2.Cantidad_Autorizada;
                txtPlazo.Text = obj2.Plazo.ToString();
                txtMontoDescontar.Text = obj2.Monto_descontar;
                txtRazones.Text = obj2.Descripcion;
            }
            catch { }

        }      
        public void mostrarDatosLabels() {
            try
            {
                mensual = Convert.ToDouble(obj3.Sueldo_Mensual);
                maximo = mensual * 1.5;
                obj2.Cantidad_maxima = maximo;
                cantidad = Convert.ToDouble(obj2.Cantidad_Solicitud);
                calcular();
                lblNombre.Text = obj3.Nombre_completo.ToString();
                lblSucursal.Text = obj3.Nombre_Sucursal.ToString().ToUpper();
                lblDepartamento.Text = obj3.Departamento.ToString();
                lblTipo.Text = obj2.Tipo_prestamo.ToString();
                lblFecha.Text = obj2.Fecha_Solicitud.ToShortDateString();

                lblPrioridad.Text = obj2.Prioridad.ToString();
                lblSueldo_Mensual.Text = String.Format("{0:###,##0.00}", mensual);
                lblCantidadMaxima.Text = String.Format("{0:###,##0.00}", maximo);
                lblCantidad.Text = String.Format("{0:###,##0.00}", cantidad);
            }
            catch { Close(); }
      }
        public void calcular() {
            try
            {
                porcentaje = Convert.ToDouble(txtPorcentaje.Text);
                porcentaje = porcentaje * 0.01;
                descontar = cantidad * porcentaje;
                plazo = cantidad / descontar;

                txtCantidad_Autorizada.Text = String.Format("{0:###,##0.00}", cantidad);
                txtMontoDescontar.Text = String.Format("{0:###,##0.00}", descontar);
                txtPlazo.Text = plazo.ToString();
            }
            catch { }
        }
        public bool ValidarSueldo() {
            try
            {
                porcentaje = Convert.ToDouble(txtPorcentaje.Text);
                if (Convert.ToDouble(obj2.Cantidad_Autorizada) > obj2.Cantidad_maxima || porcentaje < 10)
                {
                    Form1 login = new Form1();
                    login.ShowDialog();
                    if (conexion.Usuario != null) return true;
                    else return false;
                }
                return true;
            }
            catch {
                return false;
            }
        }
        public void limpiar() {
           
           dteFecha_Autorizada.Text="";
           cmbAutorizado.Text="";
           txtCantidad_Autorizada.Text="";
           txtPlazo.Text="";
           txtMontoDescontar.Text="";
           txtRazones.Text="";
        }   
        public bool validar() { 

            if (txtCantidad_Autorizada.Text !="" && txtMontoDescontar.Text != "" && txtPlazo.Text != "") return true;
            return false;
        }   
        private void ToolTip1()
        {

            ToolTip toolTip1 = new ToolTip();
            toolTip1.ShowAlways = true;
            toolTip1.SetToolTip(this.btnGuardar, "GUARDAR");
            toolTip1.SetToolTip(this.btnCancelar, "CANCELAR");
            toolTip1.SetToolTip(this.btnLimpiar, "LIMPIAR");
            toolTip1.SetToolTip(this.btnGuardarMod, "GUARDAR MODIFICAR");
            toolTip1.SetToolTip(this.btnCalcular, "CALCULAR");
        }

        #endregion
     
        #region Botones

             private void btnLimpiar_Click(object sender, EventArgs e)
                {
                    limpiar();
                }

             private void btnCancelar_Click(object sender, EventArgs e)
                {
                    Close();
                }

             private void btnGuardar_Click(object sender, EventArgs e)
                {
                    try
                    {
                        if(validar()){
                            obtenerCampos();
                            //if (ValidarSueldo())
                            //{
                                bool res = Man.GuardaAutorizacion(obj2.Id_Prestamo, obj2.Fecha_autorizacion, obj2.Autorizado, obj2.Cantidad_Autorizada, obj2.Plazo, obj2.Monto_descontar, obj2.Descripcion);

                                switch (res)
                                {
                                    case true:
                                        MessageBox.Show("SE GUARDO CORRECTAMENTE","AVISO");
                                        DataTable data = Mane.Reporte_Autorizar(obj2.Id_Prestamo);
                                        if (obj2.Autorizado == "SI")
                                        {
                                            string cadena = Cant.ConvertirCadena(Convert.ToDouble(obj2.Cantidad_Autorizada), "M.N.");

                  
                                            Prestamos.frmPrestamos_ReporteFirmaSinP rep = new Autorizacion_facturas_caja.Prestamos.frmPrestamos_ReporteFirmaSinP(data, cadena);
                                            rep.ShowDialog();
                                        }
                                        Close();
                                        break;
                                    case false:
                                        MessageBox.Show("ERROR CONEXION","ALERTA");
                                        break;
                                }
                            }else { MessageBox.Show("NO SE GUARDO","ALERTA"); }
                        //}else { MessageBox.Show("FALTAN CAMPOS POR LLENAR","ALERTA"); }
                    }
                    catch {MessageBox.Show("ERROR AL GUARDAR","ALERTA");}
                }

             private void btnGuardarMod_Click(object sender, EventArgs e)
                {
                    if (MessageBox.Show("SEGURO DE GUARDAR LA MODIFICACIÓN", "AVISO", MessageBoxButtons.OKCancel) == DialogResult.OK)
                        try
                        {
                            if (validar())
                            {
                                obtenerCampos();
                                if (ValidarSueldo())
                                {
                                    bool res = Man.ModificaAutorizacion(obj2.Id_Prestamo, obj2.Fecha_autorizacion, obj2.Autorizado, obj2.Cantidad_Autorizada, obj2.Plazo, obj2.Monto_descontar, obj2.Descripcion);
                                    switch (res)
                                    {
                                        case true:
                                            MessageBox.Show("SE GUARDO CORRECTAMENTE","AVISO");
                                            Close();
                                            break;
                                        case false:
                                            MessageBox.Show("ERROR CONEXION","ALERTA");
                                            break;
                                    }
                                }
                            }else { MessageBox.Show("FALTAN CAMPOS POR LLENAR","ALERTA"); }
                        }catch { MessageBox.Show("ERROR AL GUARDAR LA MODIFICACION","ALERTA"); }   
                }

             private void btnCalcular_Click(object sender, EventArgs e)
                {                    
                    if (txtCantidad_Autorizada.Text != "" && txtPorcentaje.Text!="") {
                     
                        cantidad = Convert.ToDouble(txtCantidad_Autorizada.Text);
                        calcular();
                       
                    } 
                }
     
        #endregion

        #region eventos
             private void cmbAutorizado_SelectedIndexChanged(object sender, EventArgs e)
        {

            if (cmbAutorizado.Text == "SI")
            {
                txtCantidad_Autorizada.Visible = true;
                txtMontoDescontar.Visible = true;
                txtPlazo.Visible = true;
                txtRazones.Visible = true;
                label3.Visible = true;
                label5.Visible = true;
                label6.Visible = true;
                label7.Visible = true;
                btnCalcular.Visible = true;

                label17.Visible = true;
                txtPorcentaje.Visible = true;
                label18.Visible = true;
            }
            else
            {
                txtCantidad_Autorizada.Visible = false;
                txtMontoDescontar.Visible = false;
                txtPlazo.Visible = false;
                txtRazones.Visible = true;
                label3.Visible = false;
                label5.Visible = false;
                label6.Visible = false;
                label7.Visible = true;
                btnCalcular.Visible = false;
                label17.Visible = false;
                txtPorcentaje.Visible = false;
                label18.Visible = false;
            }
        }

            private void txtCantidad_Autorizada_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

            private void txtPorcentaje_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

            private void txtMontoDescontar_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

            private void txtPlazo_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        #endregion

    }
}
